package com.example.elasticsearchdemo.module.user.service;

import com.example.elasticsearchdemo.module.user.entity.User;

import java.util.List;
import java.util.Optional;

/**
 * @author wangjianhua
 * @Description
 * @date 2021/7/7/007 17:05
 */
public interface UserService {

    /**
     * 通过名字或者电话号码查询
     * @param name 名字
     * @param phone 电话号码
     * @return 集合
     */
    List<User> findByNameOrPhone(String name,String phone);

    /**
     * 通过名字以及电话号查询
     * @param name 名字
     * @param phone 电话号码
     * @return 集合
     */
    List<User> findByNameAndPhone(String name,String phone);

    /**
     * 保存
     * @param user user
     * @return User
     */
    User save(User user);

    /**
     * 保存集合全部
     * @param userList userList
     * @return userList
     */
    Iterable<User> saveAll(List<User> userList);

    /**
     * 通过id查找
     * @param id id
     * @return User
     */
    Optional<User> findById(String id);

    /**
     * 是否有该id
     * @param id id
     * @return boolean
     */
    boolean existsById(String id);

    /**
     * 返回全部
     * @return userList
     */
    Iterable<User> findAll();

    /**
     * 返回指定id集合的实体类集合
     * @param ids ids
     * @return userList
     */
    Iterable<User> findAllById(List<String> ids);

    /**
     * 数量
     * @return 数量
     */
    long count();

    /**
     * 通过id删除
     * @param id id
     */
    void deleteById(String id);

    /**
     * 通过实体类删除
     * @param user user
     */
    void delete(User user);

    /**
     * 删除全部集合中的实体类
     * @param userList userList
     */
    void deleteAll(List<User> userList);

    /**
     * 删除全部
     */
    void deleteAll();
}
